package com.witsight.platform.util.lang;

import java.util.List;
import java.util.Set;

import org.apache.commons.lang3.ClassUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**   
 * 说明：类工具类
 * @Title: ClassUtil.java 
 * @Package com.witsight.platform.util.lang 
 * @See: {@link ClassUtils}
 * Copyright: Copyright (c) 2017
 * Company:sany huax witsight team by product
 * @author: penght  
 * @date: 2017年9月11日 下午2:55:34 
 * @version: V1.0
 *
 */
public abstract class ClassUtil extends ClassUtils {
	/**
	 * 说明：定义后能再同一类中使用static常量log
	 */
	private static final Logger log = LoggerFactory.getLogger(ClassUtil.class);
	
	/**
	 * 
	 * 说明：判断是否是某个类的子类或接口实现
	 * @Title: isSuperClass
	 * @See: {@link #isSuperClass(Class, Class)}
	 * @author penght
	 * @param child 子类
	 * @param parent 父类
	 * @return boolean
	 * @date: 2016年9月26日 上午11:00:23
	 */
	public static boolean isSuperClass(Class<?> child,Class<?> parent) {
		List<Class<?>> interfaces = ClassUtils.getAllInterfaces(child);
		List<Class<?>> superclasses = ClassUtils.getAllSuperclasses(child);
		if (interfaces.contains(parent)) {
			return true;
		} else {
			return superclasses.contains(parent);
		}
	}
	/**
	 * 
	 * 说明：判断是否是某个接口或类的子类
	 * @Title: isSuperInterface
	 * @See: org.springframework.util.ClassUtils.#getAllInterfacesForClassAsSet
	 * @author penght
	 * @param child 子类
	 * @param parent 父类
	 * @return true ： 是  false：否
	 *  
	 * @date: 2017年11月16日 下午3:05:19
	 */
	public static boolean isSuperInterface (Class<?> child, Class<?> parent) {
		Set<Class<?>> clazzs = org.springframework.util.ClassUtils.getAllInterfacesForClassAsSet(child);
		if (clazzs.contains(parent)) {
			return true;
		}
		return false;
	}
}
